package com.ccrfid.rmc6.service.business.rollcall2;

import com.ccrfid.rmc6.appconfig.exception.pojo.AppException;
import com.ccrfid.rmc6.entity.business.rollcall2.*;
import com.ccrfid.rmc6.repository.search.SearchCriteria;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface Rollcall2ConfigService {
    //============================================
    //1.1 分页获取点名对象组信息
    Page<RcOrgGroupEntity> getRcOrgGroupPage(SearchCriteria criteria, Pageable pageable);

    //1.2 获取单个点名对象组信息
    RcOrgGroupEntity getRcOrgGroupById(Long groupId) throws AppException;

    //1.3 新增点名对象组
    RcOrgGroupEntity createRcOrgGroup(RcOrgGroupEntity entity) throws AppException;

    //1.4 修改点名对象组信息
    RcOrgGroupEntity updateRcOrgGroup(Long groupId, RcOrgGroupEntity entity) throws AppException;

    //1.5 删除某个点名对象组
    Boolean deleteRcOrgGroup(Long groupId);

    //1.6 获取某个点名对象组全部成员
    List<RcOrgGroupMemberEntity> getRcOrgGroupMembers(Long groupId) throws AppException;

    //1.7 为点名对象组添加成员
    RcOrgGroupMemberEntity createRcOrgGroupMember(Long groupId, RcOrgGroupMemberEntity entity) throws AppException;

    //1.8 为点名对象组删除成员
    Boolean deleteRcOrgGroupMember(Long groupId, Long memberId) throws AppException;

    //====================================================
    //2.1 分页获取区域组信息
    Page<RcLocationGroupEntity> getRcLocationGroupPage(SearchCriteria criteria, Pageable pageable);

    //2.2 获取单个区域组信息
    RcLocationGroupEntity getRcLocationGroupById(Long groupId) throws AppException;

    //2.3 新增区域组
    RcLocationGroupEntity createRcLocationGroup(RcLocationGroupEntity entity) throws AppException;

    //2.4 修改区域组信息
    RcLocationGroupEntity updateRcLocationGroup(Long groupId, RcLocationGroupEntity entity) throws AppException;

    //2.5 删除某个区域组
    Boolean deleteRcLocationGroup(Long groupId) throws AppException;

    //2.6 获取某个区域组全部成员
    List<RcLocationGroupMemberEntity> getRcLocationGroupMembers(Long groupId) throws AppException;

    //2.7 为区域组添加成员
    RcLocationGroupMemberEntity createRcLocationGroupMember(Long groupId, RcLocationGroupMemberEntity entity) throws AppException;

    //2.8 为区域组删除成员
    Boolean deleteRcLocationGroupMember(Long groupId, Long memberId) throws AppException;

    //==========================================
    //3.1 分页查询点名计划信息
    Page<RcScheduleEntity> getRcSchedulePage(SearchCriteria criteria, Pageable pageable);

    //3.2 获取某个点名计划信息
    RcScheduleEntity getRcScheduleById(Long scheduleId) throws AppException;

    //3.3 新增一个点名计划
    RcScheduleEntity createRcSchedule(RcScheduleEntity entity) throws AppException;

    //3.4 修改某个点名计划
    RcScheduleEntity updateRcSchedule(Long scheduleId, RcScheduleEntity entity) throws AppException;

    //3.5 删除某个点名计划
    Boolean deleteRcScheduleById(Long scheduleId) throws AppException;
}
